const User = require('../models/user')
const axios = require('axios');
class UsersCtl {
  // 获取用户列表
  async find(ctx) {
    // 操作数据库一定要 await

    try {
      const name = ctx.query.name;
      let users = null
      if (name) {
        const regex = new RegExp(name, 'i');
        users = await User.find({ name: regex });
      } else {
        users = await User.find();
      }
      ctx.body = {
        success: true,
        data: users,
      };

    } catch (error) {
      console.error('查询失败:', error);
      // 处理错误并设置 ctx.body
      ctx.body = {
        success: false,
        message: '服务器内部错误',
      };
      ctx.throw(500, '服务器内部错误');
    }
  }
  // 根据 id 查找某一个用户
  async findById(ctx) {
    console.log('ctx.params.id', ctx.params.id);
    try {
      const user = await User.findById(ctx.params.id);
      ctx.body = {
        success: true,
        message: '查询成功',
        data: user
      }
    } catch (error) {
      ctx.body = {
        success: false,
        message: '查询成功',
      }
    }

    // ctx.body = await User.findById(ctx.params.id)
  }
  async findByName(ctx) {
    console.log('ctx.params.name', ctx.params.name);
    try {
      const user = await User.find({ name: ctx.params.name });
      if (!user) {
        ctx.status = 404;
        ctx.body = {
          success: false,
          message: '未找到指定用户',
        };
      } else {
        ctx.body = {
          success: true,
          message: '查询成功',
          data: user,
        };
      }
    } catch (error) {
      console.error('Error finding user by name:', error);
      ctx.status = 500;
      ctx.body = {
        success: false,
        message: '查询失败',
      };
    }
  }
  // 创建用户
  async create(ctx) {
    console.log('ctx', ctx.request.body);
    const { name, password, user } = ctx.request.body
    if (!name || !password || !user) {
      ctx.throw(400, '用户名、账号或密码不能为空')
      ctx.body = {
        success: false,
        message: '用户名或密码不能为空'
      }
      return
    }

    // 检查 user 是否已存在
    const existingUser = await User.findOne({ user }).exec();
    if (existingUser) {
      ctx.status = 400;
      ctx.body = {
        success: false,
        message: '该账号已存在'
      };
      return; // 结束方法执行
    }

    // 调用 API 获取随机图片 URL
    const avatarUrl = await getAvatarUrl();

    const userData = new User({
      ...ctx.request.body,
      avatar: avatarUrl
    });
    await userData.save();
    ctx.body = {
      success: true,
      message: '创建用户成功'
    }

  }
  // 更新用户信息
  async updata(ctx) {
    console.log('ctx.params.id', ctx.params.id, ctx.request.body);

    try {
      const user = await User.findByIdAndUpdate(ctx.params.id, ctx.request.body)
      ctx.body = {
        success: true,
        message: '更新成功',
        data: user
      }
    } catch (error) {
      ctx.body = {
        success: false,
        message: error,
      }
    }

  }
  // 删除用户
  async delete(ctx) {
    try {
      const user = await User.findByIdAndDelete(ctx.params.id);
      if (!user) {
        ctx.body = {
          success: false,
          message: '未找到指定用户',
        };
      } else {
        ctx.body = {
          success: true,
          data: user,
          message: '删除成功',
        };
      }
    } catch (error) {
      console.error('Error deleting user:', error); // 输出错误信息
      ctx.body = {
        success: false,
        message: '删除失败',
      };
    }
  }
}

// 获取随机图片 URL 的函数
async function getAvatarUrl() {
  try {
    const response = await axios.get('https://pic.imgdb.cn/api/avatar', {
      params: {format: 'json'}
    });

    if (response.status === 200 && response.data && response.data.url) {
      return 'https://pic.imgdb.cn' + response.data.url;
    } 
  } catch (error) {
    return '';
  }
}

module.exports = new UsersCtl()
